home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 7 / FM Towns Free Software Collection 7.iso / taropyon / hewin / ccisrc / ntm.cci < prev    next >
Text File  |  1993-11-30  |  27KB  |  1,070 lines

  1. /*************************************************************************
  2. *    "ntm.cci" : 通信ターミナル用
  3. *************************************************************************/
  4.  
  5. /*    #define    _NTM_DEBUG    */
  6.  
  7. #ifdef    _NTM_DEBUG
  8. #    define    _NTM_DSP(pos,s)    DSP_putf12(pos*8,480-16-16,C_HGREEN,0,s)
  9. #else
  10. #    define    _NTM_DSP(pos,s)
  11. #endif
  12.  
  13. #define    CENTER_DAT_FN    "center.dat"
  14. #define    DTR_OFF_TIME    2
  15.  
  16. /* タイムバッファ    */
  17. #define    NTM_TIME_LOGIN        (0)
  18. #define    NTM_TIME_LOGOUT        (1)
  19.  
  20. /* 汎用変数    */
  21. #define    NTM_REG_AUTONAVI    (0)
  22.  
  23. #ifndef    _NAV_IGNORE
  24. #include    "ntmdial.cci"
  25. #endif
  26.  
  27. /*************************************************************************
  28. *    ダイアル
  29. *************************************************************************/
  30.  
  31. int        ntm_dialStart( char *ntm, char *tel )
  32. {
  33.     int        ret, count, i, argc;
  34.     char    **argv;
  35.     char    *mosTk;
  36.     char    *center;
  37.     char    *cmd;
  38.  
  39.     if ( tel == NULL || tel[0] == '\0' )
  40.     {
  41. TEL_ERR:
  42.         DLG_tmpMsgTime( DLGPOS_MOS_SET_CENTER, DLGPOS_MOS_SET_CENTER,
  43.             C_MBLACK, C_DLGBASE, COLMIX(C_ERROR,C_GRAY),
  44.             AplErrMsgTime, "    電話番号が指定されていません。  " );
  45.         return (ERR);
  46.     }
  47.     argc = FS_argSet( tel, &argv );
  48.     if ( argc < 1 )
  49.         goto TEL_ERR;
  50.  
  51.     mosTk = MOS_push();
  52.     MOS_curType(MOSCUR_TEL);
  53.     if ( (center = NtmGetCenterPtr(ntm)) == NULL )
  54.     {
  55.         cmd = NULL;
  56.     } else
  57.     {
  58.         cmd = NtmCenterGetModem1(center);
  59.         if ( cmd[0] == '\0' )
  60.             cmd = NULL;
  61.     }
  62.     if ( cmd )
  63.         NTM_rsPuts(ntm,cmd);
  64.     else
  65.         NTM_rsPuts(ntm,"ATZ");
  66.     NTM_rsPuts(ntm,"\r");
  67.     ret = NTM_waitStr( ntm, 30, "OK", NULL );
  68.     if ( ret < 0 )
  69.     {
  70.         DLG_tmpMsgTime( DLGPOS_MOS_SET_CENTER, DLGPOS_MOS_SET_CENTER,
  71.             C_MBLACK, C_DLGBASE, COLMIX(C_ERROR,C_GRAY),
  72.             AplErrMsgTime, "    Modem not ready!!    " );
  73. ERR_RET:
  74.         MOS_pop( mosTk );
  75.         FS_argClear( argc, argv );
  76.         return (ERR);
  77.     }
  78.     if ( center )
  79.     {
  80.         NTM_wait(1);
  81.         cmd = NtmCenterGetModem2(center);
  82.         if ( cmd[0] != '\0' )
  83.         {
  84.             NTM_rsPuts(ntm,cmd);
  85.             NTM_rsPuts(ntm,"\r");
  86.             NTM_wait(2);
  87.         }
  88.     }
  89.  
  90.     count = 0;
  91.     ret = 1;
  92.     while ( ret )
  93.     {
  94.         for ( i = 0; i < argc; ++i )
  95.         {
  96.             NTM_rsPuts(ntm, "ATD");
  97.             NTM_rsPuts(ntm, argv[i]  );
  98.             NTM_rsPuts(ntm, "\r" );
  99.             MOS_CON();
  100.             EVT_idl();
  101.             ret = NTM_waitStr( ntm, 30, "CONNECT","BUSY","NO CARRIER", NULL );
  102.             if ( ret == 0 )    /* CONNECT */
  103.             {    SYL_puts(C_HGREEN,"<<<<< CONNECT >>>>>");
  104.                 break;
  105.             } else if ( ret < 0 )    /* Cancel or Timeout    */
  106.                 goto    ERR_RET;
  107.             if ( NTM_wait(5) != NORMAL )
  108.                 goto    ERR_RET;
  109.             ++count;
  110.         }
  111.     }
  112.     NTM_online( ntm );    /* 接続    */
  113.     MOS_pop(mosTk);
  114.     FS_argClear( argc, argv );
  115.  
  116.     return (NORMAL);
  117. }
  118.  
  119. int        ntm_chDir( char *dir )
  120. {
  121.     int        len;
  122.     char    tmp[128];
  123.  
  124.     if ( (len = strlen(dir)) == 0 )
  125.         return (NORMAL);
  126.     if ( len > 2 && isalpha(*dir) && dir[1] == ':' )
  127.     {    /* ドライブ指定あり    */
  128.         FS_chdrv( toupper(*dir) - 'A' );
  129.     }
  130.     if ( len > 0 && FS_isdelim(dir[len-1]) )
  131.     {
  132.         sprintf( tmp, "%s.", dir );
  133.         FS_chdir( tmp );
  134.     } else
  135.         FS_chdir( dir );
  136.     return (NORMAL);
  137. }
  138.  
  139. int        ntmSetDownloadDir( char *ntm )
  140. {
  141.     char    *center;
  142.     char    *dir;
  143.  
  144.     if ( (center = NtmGetCenterPtr(ntm)) == NULL )
  145.         return (ERR);
  146.     dir = NtmCenterGetDownDir(center);
  147.     return    ntm_chDir( dir );
  148. }
  149.  
  150. int        ntmSetUploadDir( char *ntm )
  151. {
  152.     char    *center;
  153.     char    *dir;
  154.  
  155.     if ( (center = NtmGetCenterPtr(ntm)) == NULL )
  156.         return (ERR);
  157.     dir = NtmCenterGetUpDir(center);
  158.     return    ntm_chDir( dir );
  159. }
  160.  
  161.  
  162. /*************************************************************************
  163. *    イベント処理関数
  164. *************************************************************************/
  165.  
  166. int        ntmUsr_evtFunc( int evtNo, char *sbj )
  167. {
  168.     return    NTM_cmdJump( GET_EVTSBJ_PTR(sbj), evtNo );
  169. }
  170.  
  171. /*************************************************************************
  172. *    [COMMAND]ボタン
  173. *************************************************************************/
  174.  
  175. int        NtmUsr_commandMenu( char *ntm, int x, int y )
  176. {
  177.     int            ret;
  178.     char        *mnu;
  179.     char        *obj;
  180.     char        *func;
  181.  
  182.     func = "ntmUsr_evtFunc";
  183.     obj = MNU_alloc(3);
  184.     MNU_setObj(obj, 0, MNU_NOR, '1', "Input line on"  , NULL, NTMCMD_LION  ,func, ntm );
  185.     MNU_setObj(obj, 1, MNU_NOR, '2', "Input line off" , NULL, NTMCMD_LIOFF ,func, ntm );
  186.     MNU_setObj(obj, 2, MNU_NOR, 'B', "Break"          , NULL, NTMCMD_BREAK ,func, ntm );
  187.     mnu = MNU_open( x, y, MNUATT_EXIT, obj, "COMMAND MENU" );
  188.     ret = MNU_start ( mnu );
  189.     MNU_close(mnu);
  190.     MNU_free(obj);
  191.  
  192.     return (ret);
  193. }
  194.  
  195. int        ntmPrintCutBuf()
  196. {
  197.     return TDP_printCutBuf(NULL);
  198. }
  199.  
  200. /*************************************************************************
  201. *    [MENU]メニュー
  202. *************************************************************************/
  203.  
  204. int        NtmUsr_fileMenu( char *ntm, int x, int y )
  205. {
  206.     int            ret;
  207.     char        *mnu;
  208.     char        *obj;
  209.     char        *func;
  210.  
  211.     func = "ntmUsr_evtFunc";
  212.     obj = MNU_alloc(5);
  213.     MNU_setObj(obj, 0, MNU_NOR, 'S', "Save log buffer"  , NULL, NTMCMD_SAVELOG , func, ntm );
  214.     MNU_setObj(obj, 1, MNU_NOR, 'C', "Clear log buffer" , NULL, NTMCMD_CLEARBUF, func, ntm );
  215.     MNU_setObj(obj, 2, MNU_NOR, 'T', "Append to Text"   , NULL, NTMCMD_APNDTXT , func, ntm );
  216.     MNU_setObj(obj, 3, MNU_BLK,  0 , NULL               , NULL, 0              , NULL, NULL);
  217.     MNU_setObj(obj, 4, MNU_NOR, 'P', "Print CUT-BUFFER" , NULL, 0              , "ntmPrintCutBuf", ntm );
  218.     mnu = MNU_open( x, y, MNUATT_EXIT, obj, "MENU" );
  219.     ret = MNU_start ( mnu );
  220.     MNU_close(mnu);
  221.     MNU_free(obj);
  222.  
  223.     return (ret);
  224. }
  225.  
  226. /*************************************************************************
  227. *    テキストアップロード
  228. *************************************************************************/
  229.  
  230. int        ntm_textUpload( int ret, char *sbj )
  231. {
  232.     char    *ntm;
  233.     char    *fdl;
  234.     char    *fn;
  235.  
  236.     ntm = GET_EVTSBJ_PTR(sbj);
  237.     if ( (fdl = FDL_open(0)) == NULL )
  238.         return (ERR);
  239.     FDL_set_title( fdl,"TEXT FILE UPLOAD");
  240.     FDL_set_wildcard( fdl, "*.*");
  241.     ret = FDL_start(fdl);
  242.     fn  = FDL_get_filename(fdl);
  243.     if ( ret == NORMAL && strlen(fn) > 0 )
  244.     {
  245.         NTM_fileUpload( ntm, fn );
  246.     }
  247.     FDL_close(fdl);
  248.  
  249.     return (NORMAL);
  250. }
  251.  
  252. /*************************************************************************
  253. *    X-Modem アップロード
  254. *************************************************************************/
  255.  
  256. int        ntm_Xupload( int ret, char *sbj )
  257. {
  258.     char    *ntm;
  259.     char    *fdl;
  260.     char    *fn;
  261.  
  262.     ntm = GET_EVTSBJ_PTR(sbj);
  263.     if ( (fdl = FDL_open(0)) == NULL )
  264.         return (ERR);
  265.     FDL_set_title( fdl,"X-MODEM FILE UPLOAD");
  266.     FDL_set_wildcard( fdl, "*.*");
  267.     ret = FDL_start(fdl);
  268.     fn  = FDL_get_filename(fdl);
  269.     if ( ret == NORMAL && strlen(fn) > 0 )
  270.     {
  271.         NTM_Xupload( ntm, fn );
  272.     }
  273.     FDL_close(fdl);
  274.  
  275.     return (NORMAL);
  276. }
  277.  
  278. char    *ntm_getPara_rzsz(char *ntm)
  279. {
  280.     char    *rsb;
  281.     int        baud, md;
  282.     char    *spd, mode[8];
  283.     static char    tmp[256];
  284.  
  285.     rsb = NtmGetRsbPtr(ntm);
  286.     md   = _getByte(rsb);
  287.     baud = _getByte(rsb + 1);
  288.     switch ( baud )
  289.     {
  290.         case 0:    spd = "300";    break;
  291.         case 1:    spd = "600";    break;
  292.         case 2:    spd = "1200";    break;
  293.         case 3:    spd = "2400";    break;
  294.         case 4:    spd = "4800";    break;
  295.         case 5:    spd = "9600";    break;
  296.         case 6:    spd = "19200";    break;
  297.     }
  298.     mode[0] = ( md & 1 ) ? '8' : '7';
  299.     mode[1] = ( md & 2 ) ? (md & 4 ? 'E':'O') : 'N';
  300.     mode[2] = ( md & 8 ) ? '2' : '1';
  301.     mode[3] = '\0';
  302.  
  303.     sprintf( tmp,"$-b%s $-m%s", spd, mode );
  304.     return (tmp);
  305. }
  306.  
  307. #ifdef    _NTM_EXDOWN
  308. char    *SZ_PATH_KEY = "Sz_path";
  309.  
  310. int        ntm_EXupload( int ret, char *sbj )
  311. {
  312.     int        ret;
  313.     char    *ntm;
  314.     char    *dlg;
  315.     char    cmd[1024];
  316.     char    *p, prog[128];
  317.     int        argc;
  318.     char    **argv;
  319.  
  320.     char    *fdl;
  321.     char    *fnptr, fn[256];
  322.  
  323.     if ( (fdl = FDL_open(0)) == NULL )
  324.         return (ERR);
  325.     FDL_set_title( fdl,"FILE UPLOAD (EXTERNAL COMMAND)");
  326.     FDL_set_wildcard( fdl, "*.*");
  327.     ret = FDL_start(fdl);
  328.     fnptr = FDL_get_filename(fdl);
  329.     if ( ret == NORMAL && strlen(fnptr) > 0 )
  330.     {
  331.         strcpy( fn, fnptr );
  332.     } else
  333.         fn[0] = '\0';
  334.     FDL_close(fdl);
  335.     if ( fn[0] == '\0' )
  336.         return (NORMAL);
  337.  
  338.     if ( (p = AMAC_getName(SysMacro,SZ_PATH_KEY)) == NULL )
  339.     {
  340. #ifdef    _TAROPYON_SYSTEM
  341.         strcpy( prog, "I:/HC/GUILIB3/PRG/ZMODEM/sz.exp" );
  342. #else
  343.         sprintf( prog, "%ssz.exp", AplGetStartPath());
  344. #endif
  345.         AMAC_setKey( SysMacro, SZ_PATH_KEY, prog );
  346.     } else
  347.         strcpy( prog, p );
  348.  
  349.     ntm = GET_EVTSBJ_PTR(sbj);
  350.     dlg = DLG_getsOpen( DLGPOS_MOS_SET_HOME, DLGPOS_MOS_SET_HOME, 560,
  351.         " Command & parameters " );
  352.     DLG_getsSetTitle( dlg, "Call external command" );
  353.     sprintf( cmd, "%s $sz $-q %s %s", prog, ntm_getPara_rzsz(ntm), fn );
  354.     ret = DLG_getsStart( dlg, 1023, cmd );
  355.     DLG_getsClose(dlg);
  356.  
  357.     if ( ret > 0 && cmd[0] )
  358.     {
  359.         argc = FS_argSet( cmd, &argv );
  360.         if ( argc > 0 )
  361.         {
  362.             if ( strcmpi( argv[0], prog ) )
  363.             {
  364.                 strcpy( prog, argv[0] );
  365.                 AMAC_setKey( SysMacro, SZ_PATH_KEY, prog );
  366.             }
  367.             FS_argClear( argc, argv );
  368.         }
  369.         AplDtaInit();
  370.         AplDtaSetStr( "$MainArg", "%s", cmd );
  371.                                 /* ネイティブ子プロセスに渡すパラメータ */
  372.         AplPclExec( prog,  0 );
  373.     }
  374.     return (NORMAL);
  375. }
  376. #endif
  377.  
  378. /*************************************************************************
  379. *    [ UP ]メニュー(アップロード)
  380. *************************************************************************/
  381.  
  382. int        NtmUsr_uploadMenu( char *ntm, int x, int y )
  383. {
  384.     int            ret;
  385.     char        *mnu;
  386.     char        *obj;
  387.     char        *func;
  388.     int            no, onum;
  389.  
  390.     ntmSetUploadDir( ntm );
  391.     func = "ntmUsr_evtFunc";
  392.     onum = 4;
  393. #ifdef    _NTM_EXUP
  394.     ++onum;
  395. #endif
  396.     obj = MNU_alloc(onum);
  397.  
  398.     no = 0;
  399.     MNU_setObj(obj, no++, MNU_NOR, 'C', "Send CUT-BUFFER"    , NULL, NTMCMD_SENDCBUF, func, ntm );
  400.     MNU_setObj(obj, no++, MNU_NOR, 'T', "Send text buffer"   , NULL, NTMCMD_SENDTBUF, func, ntm );
  401.     MNU_setObj(obj, no++, MNU_NOR, 'N', "Normal file upload" , NULL, 0, "ntm_textUpload", ntm );
  402.     MNU_setObj(obj, no++, MNU_NOR, 'X', "X-Modem upload"     , NULL, 0, "ntm_Xupload"   , ntm );
  403. #ifdef    _NTM_EXUP
  404.     MNU_setObj(obj, no++, MNU_NOR, 'E', "Upload (External)"  , NULL, 0, "ntm_EXupload"  , ntm );
  405. #endif
  406.     mnu = MNU_open( x, y, MNUATT_EXIT, obj, "UPLOAD" );
  407.     ret = MNU_start ( mnu );
  408.     MNU_close(mnu);
  409.     MNU_free(obj);
  410.  
  411.     return (ret);
  412. }
  413.  
  414.  
  415. /*************************************************************************
  416. *    テキストダウンロード
  417. *************************************************************************/
  418.  
  419. int        ntm_textDownload( int ret, char *sbj )
  420. {
  421.     char    *ntm;
  422.     char    *fdl;
  423.     char    *fn;
  424.  
  425.     ntm = GET_EVTSBJ_PTR(sbj);
  426.  
  427.     if ( NTM_fileDownCheck(ntm) )
  428.         return (ERR);
  429.  
  430.     if ( (fdl = FDL_open(0)) == NULL )
  431.         return (ERR);
  432.     FDL_set_title( fdl,"TEXT FILE DOWNLOAD");
  433.     FDL_set_wildcard( fdl, "*.*");
  434.     ret = FDL_start(fdl);
  435.     fn  = FDL_get_filename(fdl);
  436.     if ( ret == NORMAL && strlen(fn) > 0 )
  437.     {
  438.         NTM_fileDownload( ntm, fn );
  439.     }
  440.     FDL_close(fdl);
  441.  
  442.     return (NORMAL);
  443. }
  444.  
  445. /*************************************************************************
  446. *    X-Modem ダウンロード
  447. *************************************************************************/
  448.  
  449. int        ntm_Xdownload( int ret, char *sbj )
  450. {
  451.     char    *ntm;
  452.     char    *fdl;
  453.     char    *fn;
  454.  
  455.     ntm = GET_EVTSBJ_PTR(sbj);
  456.     if ( (fdl = FDL_open(0)) == NULL )
  457.         return (ERR);
  458.     FDL_set_title( fdl,"X-MODEM FILE DOWNLOAD");
  459.     FDL_set_wildcard( fdl, "*.*");
  460.     ret = FDL_start(fdl);
  461.     fn  = FDL_get_filename(fdl);
  462.     if ( ret == NORMAL && strlen(fn) > 0 )
  463.     {
  464.         NTM_Xdownload( ntm, fn );
  465.     }
  466.     FDL_close(fdl);
  467.  
  468.     return (NORMAL);
  469. }
  470.  
  471. #ifdef    _NTM_EXDOWN
  472. char    *RZ_PATH_KEY = "Rz_path";
  473.  
  474. int        ntm_EXdownload( int ret, char *sbj )
  475. {
  476.     int        ret;
  477.     char    *ntm;
  478.     char    *dlg;
  479.     char    cmd[1024];
  480.     char    *p, prog[128];
  481.     int        argc;
  482.     char    **argv;
  483.  
  484.     if ( (p = AMAC_getName( SysMacro, RZ_PATH_KEY)) == NULL )
  485.     {
  486. #ifdef    _TAROPYON_SYSTEM
  487.         strcpy( prog, "I:/HC/GUILIB3/PRG/ZMODEM/rz.exp");
  488. #else
  489.         sprintf( prog, "%srz.exp", AplGetStartPath());
  490. #endif
  491.         AMAC_setKey( SysMacro, RZ_PATH_KEY, prog );
  492.     } else
  493.         strcpy( prog, p );
  494.     ntm = GET_EVTSBJ_PTR(sbj);
  495.     dlg = DLG_getsOpen( DLGPOS_MOS_SET_HOME, DLGPOS_MOS_SET_HOME, 560,
  496.         " Command & parameters " );
  497.     DLG_getsSetTitle( dlg, "Call external command" );
  498.     sprintf( cmd, "%s $-q $rz %s", prog, ntm_getPara_rzsz(ntm) );
  499.     ret = DLG_getsStart( dlg, 1023, cmd );
  500.     DLG_getsClose(dlg);
  501.  
  502.     if ( ret > 0 && cmd[0] )
  503.     {
  504.         argc = FS_argSet( cmd, &argv );
  505.         if ( argc > 0 )
  506.         {
  507.             if ( strcmpi( argv[0], prog ) )
  508.             {
  509.                 strcpy( prog, argv[0] );
  510.                 AMAC_setKey( SysMacro, RZ_PATH_KEY, prog );
  511.             }
  512.             FS_argClear( argc, argv );
  513.         }
  514.         AplDtaInit();
  515.         AplDtaSetStr( "$MainArg", "%s", cmd );
  516.         AplPclExec( prog,  0 );
  517.     }
  518.     return (NORMAL);
  519. }
  520. #endif
  521.  
  522. #ifdef    _NTM_DOSCALL
  523. /*************************************************************************
  524. *    DOS コマンドを使ったダウンロード
  525. *************************************************************************/
  526.  
  527. int        ntm_DOSdownload( int ret, char *sbj )
  528. {
  529.     char    *ntm;
  530.     char    *dlg;
  531.     char    cmd[80];
  532.     int        ret;
  533.  
  534.     ntm = GET_EVTSBJ_PTR(sbj);
  535.     dlg = DLG_getsOpen( DLGPOS_MOS_SET_HOME, DLGPOS_MOS_SET_HOME, 320,
  536.         " DOS command ? " );
  537.     DLG_getsSetTitle( dlg, "Call Child process" );
  538.     strcpy( cmd, "rz");
  539.     ret = DLG_getsStart( dlg, 79, cmd );
  540.     DLG_getsClose(dlg);
  541.  
  542.     if ( ret > 0 )
  543.     {    /* ダウンロード開始    */
  544.         dlg = DLG_msgOpen( DLGPOS_CENTER_OF_SCN, DLGPOS_CENTER_OF_SCN,
  545.             80*6, 14*12, C_MBLACK, C_DLGBASE, COLMIX(C_INFO,C_GRAY),
  546.             "DOWNLOAD" );
  547.         if ( dlg )
  548.         {
  549.             DLG_msgSetConfig( dlg, 4, 6, 12 );
  550.             DLG_msgClear( dlg, -1 );
  551.             DLG_msgConsSet( dlg, C_MBLACK, C_HWHITE);    /* コンソール出力設定    */
  552.         }
  553.         MOS_DEC();
  554.         RS_pause();
  555.         system( cmd );
  556.         RS_continue();
  557.         MOS_INC();
  558.         if ( dlg )
  559.         {
  560.             DLG_msgPrintf(dlg,"\r\n***** COMPLETED *****\r\n");
  561.             NTM_wait(2);
  562.             DLG_msgConsEnd( dlg );
  563.             DLG_msgClose(dlg);
  564.         }
  565.     }
  566.     return (NORMAL);
  567. }
  568. #endif
  569.  
  570. /*************************************************************************
  571. *    [DOWN]メニュー(ダウンロード)
  572. *************************************************************************/
  573.  
  574. int        NtmUsr_downloadMenu( char *ntm, int x, int y )
  575. {
  576.     int            ret;
  577.     char        *mnu;
  578.     char        *obj;
  579.     char        *func;
  580.     int            no, onum;
  581.  
  582.     ntmSetDownloadDir( ntm );
  583.     func = "ntmUsr_evtFunc";
  584.     onum = 2;
  585. #ifdef    _NTM_DOSCALL
  586.     ++onum;
  587. #endif
  588. #ifdef    _NTM_EXDOWN
  589.     ++onum;
  590. #endif
  591.     obj = MNU_alloc(onum);
  592.     no = 0;
  593.     MNU_setObj(obj, no++, MNU_NOR, 'N', "Normal file download"  , NULL, 0, "ntm_textDownload", ntm );
  594.     MNU_setObj(obj, no++, MNU_NOR, 'X', "X-Modem download"      , NULL, 0, "ntm_Xdownload"   , ntm );
  595. #ifdef    _NTM_EXDOWN
  596.     MNU_setObj(obj, no++, MNU_NOR, 'E', "Download (External)"   , NULL, 0, "ntm_EXdownload"  , ntm );
  597. #endif
  598. #ifdef    _NTM_DOSCALL
  599.     MNU_setObj(obj, no++, MNU_NOR, 'C', "Call DOS child process", NULL, 0, "ntm_DOSdownload" , ntm );
  600. #endif
  601.     mnu = MNU_open( x, y, MNUATT_EXIT, obj, "DOWNLOAD" );
  602.     ret = MNU_start ( mnu );
  603.     MNU_close(mnu);
  604.     MNU_free(obj);
  605.  
  606.     return (ret);
  607. }
  608.  
  609. /*************************************************************************
  610. *    直接ダイアル
  611. *************************************************************************/
  612.  
  613. int        ntm_directDial( char *ntm )
  614. {
  615.     int                ret;
  616.     char            *dlg;
  617.     static    char    tel[256];
  618.  
  619.     dlg = DLG_getsOpen( DLGPOS_MOS_SET_HOME, DLGPOS_MOS_SET_HOME, 320,
  620.                         "電話番号を入力してください。");
  621.     DLG_getsSetTitle( dlg, "DIAL" );
  622.     ret = DLG_getsStart( dlg, 255, tel );
  623.     DLG_getsClose(dlg);
  624.     if ( ret > 0 )
  625.     {
  626.         ntm_dialStart( ntm, tel );
  627.     }
  628.     return (NORMAL);
  629. }
  630.  
  631. int        ntm_centerSelect( char *ntm )
  632. {
  633.     char    *center;
  634.     char    *keyWord;
  635.  
  636.     if ( (center = NTM_centerSelect()) != NULL )
  637.     {    keyWord = NtmCenterGetKeyWord( center );
  638.         NTM_setCenter( ntm, keyWord );    /* センタを指定    */
  639.     }
  640.     return (NORMAL);
  641. }
  642.  
  643. /*************************************************************************
  644. *    [AUTO]メニュー(センター未登録状態)
  645. *************************************************************************/
  646.  
  647. int        NtmUsr_autoFreeMenu( char *ntm, int x, int y )
  648. {
  649.     int        ret;
  650.     char    *obj;
  651.     char    *mnu;
  652.  
  653.     obj = MNU_alloc(5);
  654.     MNU_setObj(obj, 0, MNU_NOR, 'D', "ダイアル"              , NULL, 1, NULL, NULL );
  655.     MNU_setObj(obj, 1, MNU_NOR, 'S', "カレント・センター指定", NULL, 2, NULL, NULL );
  656.     MNU_setObj(obj, 2, MNU_BLK,  0 , NULL                    , NULL, 0, NULL, NULL );
  657.     MNU_setObj(obj, 3, MNU_NOR, 'N', "新規センター登録"      , NULL, 3, NULL, NULL );
  658.     MNU_setObj(obj, 4, MNU_NOR, 'K', "センターデータ削除"    , NULL, 4, NULL, NULL );
  659.     mnu = MNU_open( x, y, MNUATT_EXIT, obj, "AUTO MENU" );
  660.     ret = MNU_start ( mnu );
  661.     MNU_close(mnu);
  662.     MNU_free(obj);
  663.     switch( ret )
  664.     {
  665.         case 1:    ret = ntm_directDial(ntm);        break;
  666.         case 2:    ret = ntm_centerSelect(ntm);    break;
  667.         case 3:    ret = NTM_makeNewCenter();        break;
  668.         case 4:    ret = NTM_centerDelete();        break;
  669.     }
  670.     return (ret);
  671. }
  672.  
  673.  
  674. /*************************************************************************
  675. *    [AUTO]メニュー(非接続状態)
  676. *************************************************************************/
  677.  
  678. int        NtmUsr_autoOffLineMenu( char *ntm, int x, int y )
  679. {
  680.     int        ret, n;
  681.     char    *center;
  682.     char    *name, *keyWord;
  683.     char    *obj;
  684.     char    *mnu;
  685.  
  686.     center = NtmGetCenterPtr( ntm );
  687.     if ( center == NULL )
  688.     {    /* センターが指定されていない    */
  689.         return    NtmUsr_autoFreeMenu( ntm, x, y );
  690.     } else
  691.     {
  692.         NTM_callCenterFunc( ntm, "naviInit" );
  693.  
  694.         name    = NtmCenterGetName(   center);
  695.         keyWord = NtmCenterGetKeyWord(center);
  696. #ifndef    _NAV_IGNORE
  697.         n = NtmGetNaviServiceMode(ntm) ? 7 : 6;
  698. #else
  699.         n = 6;
  700. #endif
  701.         obj = MNU_alloc( n );
  702.         n = 0;
  703.         MNU_setObj(obj, n++, MNU_NOR, 'L', "オートログイン"        , NULL, 1, NULL, NULL );
  704. #ifndef    _NAV_IGNORE
  705.         if ( NtmGetNaviServiceMode(ntm) )
  706.             MNU_setObj(obj, n++, MNU_NOR, 'A', "オートナビゲータ"  , NULL, 2, NULL, NULL );
  707. #endif
  708.         MNU_setObj(obj, n++, MNU_NOR, 'C', "センターデータ設定"    , NULL, 3, NULL, NULL );
  709.         MNU_setObj(obj, n++, MNU_NOR, 'S', "カレント・センター変更", NULL, 4, NULL, NULL );
  710.         MNU_setObj(obj, n++, MNU_BLK,  0 , NULL                    , NULL, 0, NULL, NULL );
  711.         MNU_setObj(obj, n++, MNU_NOR, 'N', "新規センター登録"      , NULL, 5, NULL, NULL );
  712.         MNU_setObj(obj, n++, MNU_NOR, 'K', "センターデータ削除"    , NULL, 6, NULL, NULL );
  713.         mnu = MNU_open( x, y, MNUATT_EXIT, obj, name );
  714.         ret = MNU_start ( mnu );
  715.         MNU_close(mnu);
  716.         MNU_free(obj);
  717.         switch ( ret )
  718.         {
  719.             case 1:    /* Dial & login    */
  720.                 return NTM_callLogin( ntm );
  721. #ifndef    _NAV_IGNORE
  722.             case 2:    /* Navigater    */
  723.                 break;
  724. #endif
  725.             case 3:    /* Config        */
  726.                 ret = NTM_centerConfig( keyWord );
  727.                 if ( ret == NORMAL )
  728.                 {    /* パラメータ再設定    */
  729.                     NTM_setCenter( ntm, keyWord );
  730.                 }
  731.                 return (ret);
  732.             case 4:    /* センター変更    */
  733.                 return    ntm_centerSelect(ntm);    break;
  734.             case 5:    /* 新規センター登録    */
  735.                 return    NTM_makeNewCenter();
  736.             case 6:    /* センター削除    */
  737.                 return    NTM_centerDelete();
  738.         }
  739.         return (NORMAL);
  740.     }
  741. }
  742.  
  743. /*************************************************************************
  744. *    [AUTO]メニュー(接続状態)
  745. *************************************************************************/
  746.  
  747. int        NtmUsr_autoOnLineMenu( char *ntm, int x, int y )
  748. {
  749.     int        ret;
  750.     char    *center;
  751.     char    *obj;
  752.     char    *mnu;
  753.  
  754.     center = NtmGetCenterPtr( ntm );
  755.     if ( center == NULL )
  756.     {    /* センターが指定されていない    */
  757.         obj = MNU_alloc(1);
  758.         MNU_setObj(obj, 0, MNU_NOR, 'O', "OFF 回線切断", NULL, 1, NULL, NULL );
  759.         mnu = MNU_open( x, y, MNUATT_EXIT, obj, "AUTO MENU" );
  760.         ret = MNU_start ( mnu );
  761.         MNU_close(mnu);
  762.         MNU_free(obj);
  763.         switch ( ret )
  764.         {
  765.             case 1:    return    NTM_offline(ntm,DTR_OFF_TIME);
  766.         }
  767.         return (NORMAL);
  768.     } else
  769.     {
  770.         return    NTM_callAutoMenu( ntm, x, y );
  771.     }
  772. }
  773.  
  774. int        _ntm_setFilterFunc( char *ntm, char *func )
  775. {
  776.     int        ret;
  777.  
  778.     if ( (ret = NtmSetFilterFunc( ntm, func)) != NORMAL )
  779.     {    /* error */
  780.         DLG_tmpMsgTime( DLGPOS_MOS_SET_CENTER, DLGPOS_MOS_SET_CENTER,
  781.             C_MBLACK, C_DLGBASE, COLMIX(C_ERROR,C_GRAY),
  782.             AplErrMsgTime, "    %s : \n    このフィルタ関数は他のウィンドゥで既に使われています。  ",
  783.             func );
  784.     } else
  785.     {
  786.         NtmFilterModeOn( ntm );
  787.     }
  788.     return (ret);
  789. }
  790.  
  791. /*************************************************************************
  792. *    フィルター用正規表現の入力と設定
  793. *************************************************************************/
  794.  
  795. int        _ntm_inputFilterPtn( char *ntm )
  796. {
  797.     int            ret;
  798.     char        *dlg;
  799.     char        tmp[256];
  800.  
  801.     strncpy( tmp, NtmGetFilterPtn(ntm), 255 );
  802.     tmp[255] = '\0';
  803.     dlg = DLG_getsOpen( DLGPOS_MOS_SET_HOME, DLGPOS_MOS_SET_HOME, 320,
  804.                         "%s", tmp );
  805.     DLG_getsSetTitle( dlg, "FILTER PATTERN" );
  806.     ret = DLG_getsStart( dlg, 255, tmp );
  807.     DLG_getsClose(dlg);
  808.     if ( ret > 0 )
  809.     {
  810.         if ( NtmSetFilterPtn(ntm,tmp,1) == NORMAL )
  811.         {    NtmSetFilterFunc( ntm, NULL );    /* フィルタ関数解除    */
  812.             NtmFilterModeOn( ntm );
  813.         }
  814.     }
  815.  
  816.     return (NORMAL);
  817. }
  818.  
  819. int        _ntm_filterTest( char *ntm )
  820. {
  821.     char    *fdl;
  822.     char    *fp;
  823.     int        ret;
  824.     char    *fn, tmp[256], buf[BUFSIZ];
  825.  
  826.     if ( (fdl = FDL_open(0)) == NULL )
  827.         return (ERR);
  828.     FDL_set_title( fdl,"FILTER SEND FILE");
  829.     FDL_set_wildcard( fdl, "*.*");
  830.     ret = FDL_start(fdl);
  831.     fn  = FDL_get_filename(fdl);
  832.     if ( ret == NORMAL && strlen(fn) > 0 )
  833.     {
  834.         strcpy( tmp, fn );
  835.     } else
  836.         ret = ERR;
  837.     FDL_close(fdl);
  838.  
  839.     if ( ret == NORMAL )
  840.     {
  841.         NTM_puts( ntm, "\r\n***** FILTER TEST *****\r\n");
  842.         if ( (fp = FM_fopen( tmp,"rb")) == NULL )
  843.         {    NTM_puts( ntm, "\r\n@ File open error!!\r\n");
  844.             return (ERR);
  845.         }
  846.         while ( fgets(buf,BUFSIZ,fp) != NULL )
  847.         {
  848.             NTM_sendFilter( ntm, buf );
  849.             if ( kbhit() )
  850.             {    NTM_puts( ntm, "\r\n***** BREAK *****\r\n");
  851.                 break;
  852.             }
  853.         }
  854.         FM_fclose(fp);
  855.     }
  856.     return (0);
  857. }
  858.  
  859.  
  860. /*************************************************************************
  861. *    センター非選択状態のフィルタメニュー
  862. *************************************************************************/
  863.  
  864. int        NtmUsr_filterMenu( char *ntm, int x, int y )
  865. {
  866.     int        ret;
  867.     char    *obj;
  868.     char    *mnu;
  869.  
  870.     obj = MNU_alloc(3);
  871.     MNU_setObj(obj, 0, MNU_NOR, 'F', "Set filter pattern" , NULL, 1, NULL, NULL );
  872.     MNU_setObj(obj, 1, MNU_NOR, 'O', "Filter mode off"    , NULL, 2, NULL, NULL );
  873.     MNU_setObj(obj, 2, MNU_NOR, 'T', "Filter test"        , NULL, 3, NULL, NULL );
  874.     mnu = MNU_open( x, y, MNUATT_EXIT, obj, "FILTER MENU" );
  875.     ret = MNU_start ( mnu );
  876.     MNU_close(mnu);
  877.     MNU_free(obj);
  878.     switch ( ret )
  879.     {
  880.         case 1:
  881.             _ntm_inputFilterPtn( ntm );
  882.             break;
  883.         case 2:    /* filter off */
  884.             NtmSetFilterPtn( ntm, "",0 );
  885.             NtmSetFilterFunc( ntm, NULL );
  886.             NtmFilterModeOff( ntm );
  887.             break;
  888.         case 3:
  889.             _ntm_filterTest( ntm );
  890.             break;
  891.     }
  892.     return (NORMAL);
  893. }
  894.  
  895.  
  896. int    NtmUsr_func_01( char *ntm ) { return NTM_cmdJump( ntm, NTMCMD_FILEMENU );    }
  897. int    NtmUsr_func_02( char *ntm ) { return NTM_cmdJump( ntm, NTMCMD_UPMENU   );    }
  898. int    NtmUsr_func_03( char *ntm ) { return NTM_cmdJump( ntm, NTMCMD_DOWNMENU );    }
  899. int    NtmUsr_func_04( char *ntm ) { return NTM_cmdJump( ntm, NTMCMD_AUTOMENU );    }
  900. int    NtmUsr_func_05( char *ntm ) { return NTM_cmdJump( ntm, NTMCMD_SETUP    );    }
  901. int    NtmUsr_func_06( char *ntm ) { return NTM_cmdJump( ntm, NTMCMD_FILTER   );    }
  902.  
  903. int    NtmUsr_func_10( char *ntm ) { return NTM_cmdJump( ntm, NTMCMD_BREAK    );    }
  904. int    NtmUsr_func_11( char *ntm ) {        NTM_help( ntm ); return (NORMAL)   ;    }
  905. int    NtmUsr_func_12( char *ntm ) { return NTM_cmdJump( ntm, NTMCMD_RESMAX   );    }
  906. int    NtmUsr_func_32( char *ntm ) { return NTM_cmdJump( ntm, NTMCMD_RESMIN   );    }
  907.  
  908. /*************************************************************************
  909. *    [SETUP2]
  910. *************************************************************************/
  911.  
  912. int    NtmUsr_func_25( char *ntm )    /* [SHIFT]+[PF5]    */
  913. {
  914.     char        *cns;
  915.     int            ret;
  916.     char        *mnu;
  917.     char        *obj;
  918.  
  919.     cns = NtmGetCnsPtr( ntm );
  920.  
  921.     obj = MNU_alloc(2);
  922.     MNU_setObj(obj, 0, MNU_NOR, 'C' , "Change color table",    NULL, NTMCMD_CHGCOLOR, "ntmUsr_evtFunc", ntm );
  923.     MNU_setObj(obj, 1, MNU_NOR, 'T' , "Save color table"  ,    NULL, 2              ,  NULL           , NULL );
  924.  
  925.     mnu = MNU_open( DLGPOS_MOS_SET_HOME, DLGPOS_MOS_SET_HOME,
  926.         MNUATT_EXIT, obj, "SETUP2" );
  927.     ret = MNU_start ( mnu );
  928.     MNU_close(mnu);
  929.     MNU_free(obj);
  930.  
  931.     switch ( ret )
  932.     {
  933.         case 2:    CnsUsr_saveColTbl( cns );    break;
  934.     }
  935.     return    (NORMAL);
  936. }
  937.  
  938. #include    "ntmlib.cci"
  939.  
  940. #ifdef    _NIFTY
  941. #include    "nifty.cci"
  942. #endif
  943. #ifdef    _NANNO
  944. #include    "nanno.cci"
  945. #endif
  946. #ifdef    _JATIC
  947. #include    "jatic.cci"
  948. #endif
  949. #ifdef    _OFN
  950. #include    "ofn.cci"
  951. #endif
  952. #ifdef    _HELINK
  953. #include    "helink.cci"
  954. #endif
  955.  
  956. #ifdef    _CENTER01
  957. #include    "center01.cci"
  958. #endif
  959. #ifdef    _CENTER02
  960. #include    "center02.cci"
  961. #endif
  962. #ifdef    _CENTER03
  963. #include    "center03.cci"
  964. #endif
  965. #ifdef    _CENTER04
  966. #include    "center04.cci"
  967. #endif
  968.  
  969. char    *NtmTbl_metakey[26] =
  970. {
  971.     /* A */    "read All",
  972.     /* B */    "go Bill",
  973.     /* C */    "Compose",
  974.     /* D */    "Down",
  975.     /* E */    "Echo",
  976.     /* F */    "Forward",
  977.     /* G */    "Guest",
  978.     /* H */    "go HP",
  979.     /* I */    "Insert",
  980.     /* J */    "Jump",
  981.     /* K */    "Delete",
  982.     /* L */    "Lib",
  983.     /* M */    "go Member",
  984.     /* N */    "Number",
  985.     /* O */    "Off",
  986.     /* P */    "go Phone",
  987.     /* Q */    "Quit",
  988.     /* R */    "Reply",
  989.     /* S */    "Store",
  990.     /* T */    "Time",
  991.     /* U */    "Upload",
  992.     /* V */    "View",
  993.     /* W */    "Wait",
  994.     /* X */    "rvl",
  995.     /* Y */    "sdl",
  996.     /* Z */    "mread room:"
  997. };
  998.  
  999. /*************************************************************************
  1000. *    システム初期化
  1001. *************************************************************************/
  1002.  
  1003. int        NtmUsr_sysInit()
  1004. {
  1005.     int            i;
  1006.  
  1007.     for ( i = 0; i < 26; ++i )
  1008.         NtmMetaKeySet( 'A'+i, NtmTbl_metakey[i]);
  1009.  
  1010. #ifdef    _NIFTY
  1011.     _NIFTY_init();    /* NIFTY-Serve センター登録    */
  1012. #endif
  1013. #ifdef    _NANNO
  1014.     _NANNO_init();    /* Nanno netセンター登録        */
  1015. #endif
  1016. #ifdef    _JATIC
  1017.     _JATIC_init();    /* JATIC センター登録        */
  1018. #endif
  1019. #ifdef    _OFN
  1020.     _OFN_init();    /* Oh!FM TOWNS NET センター登録        */
  1021. #endif
  1022. #ifdef    _HELINK
  1023.     _HELINK_init();    /* HE-LINK センター登録 */
  1024. #endif
  1025.  
  1026. #ifdef    _CENTER01
  1027.     _CENTER01_init();
  1028. #endif
  1029. #ifdef    _CENTER02
  1030.     _CENTER02_init();
  1031. #endif
  1032. #ifdef    _CENTER03
  1033.     _CENTER03_init();
  1034. #endif
  1035. #ifdef    _CENTER04
  1036.     _CENTER04_init();
  1037. #endif
  1038.  
  1039.     NTM_loadCenterData( CENTER_DAT_FN );
  1040. }
  1041.  
  1042. int        NtmUsr_sysTerm( int saveFlag )
  1043. {
  1044.     if ( saveFlag )
  1045.         NTM_saveCenterData( CENTER_DAT_FN );
  1046.     return (NORMAL);
  1047. }
  1048.  
  1049.  
  1050. /*************************************************************************
  1051. *    受信ラインチェック
  1052. *************************************************************************/
  1053.  
  1054. int        NtmUsr_lineCheck( char *ntm, char *buf )
  1055. {
  1056.     return (NORMAL);
  1057. }
  1058.  
  1059. /*************************************************************************
  1060. *    入力文字列の送信
  1061. *************************************************************************/
  1062.  
  1063. int        NtmUsr_inputCheck( char *ntm, char *s )
  1064. {
  1065.     NTM_rsPuts( ntm, s );
  1066.     NTM_rsPuts( ntm, "\r" );
  1067.     return (NORMAL);
  1068. }
  1069.  
  1070.